﻿using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using BLToolkit.Data;
using BLToolkit.DataAccess;
using BLToolkit.Mapping;
using Devsoft.DB.Models;
using System.Configuration;

namespace Platform.Model
{
    /// <summary>
    /// Lớp biểu diển Nhà cung cấp
    /// </summary>
    [TableName("Supplier")]
    public class Supplier : Devsoft.DB.Models.Flat.ModelWithIdAndManager<Supplier, SupplierManager>
    {

        /// <summary>
        /// mã nhà cung cấp để phân biệt trong CSDL
        /// </summary>
        [PrimaryKey,Identity]
        public int ID { get; set; }

        /// <summary>
        /// mã khách hàng đặt mua sản phẩm của nhà cung cấp
        /// </summary>
        public int MarketId { get; set; }

        /// <summary>
        /// mã nhà cũng cấp theo quy định từng khách hàng
        /// </summary>
        public string SupNo { get; set; }

        /// <summary>
        /// Họ nhà cung cấp
        /// </summary>
        public string FirstName { get; set; }

        /// <summary>
        /// tên nhà cung cấp
        /// </summary>
        public string LastName { get; set; }

        /// <summary>
        /// địa chỉ nhà cung cấp
        /// </summary>
        public string Address { get; set; }

        /// <summary>
        /// số điện thoại nahf cung cấp
        /// </summary>
        public string Tel { get; set; }

        /// <summary>
        /// thời gian cập nhạt cuối
        /// </summary>
        public DateTime LastUpdated { get; set; }

        /// <summary>
        /// thông tin khách hàng đã đặt hàng nhà cung cấp
        /// </summary>
        [Association(ThisKey = "MarketId", OtherKey = "ID", CanBeNull = false)]
        public Market Market { get; set; }
        /// <summary>
        /// thông tin  nhà cung cấp của đơn đặt hàng 
        /// </summary>
        [Association(ThisKey = "ID", OtherKey = "SupId", CanBeNull = false)]
        public DailyOrder DailyOrder { get; set; }
        /// <summary>
        /// các nhà cung cấp sản phẩm trong kho lạnh
        /// </summary>
        [Association(ThisKey = "ID", OtherKey = "SupId", CanBeNull = false)]
        public Stock Stock { get; set; }

    }
    public abstract class SupplierManager : Manager<Supplier>
    {
        public SupplierManager(DbManager dbManager)
            : base(dbManager)
        {
        }

        public abstract void DeleteById(int suppId);
        //public abstract void Insert(Supplier sup);
        public abstract List<Supplier> Find(string str);
    }
}
